
// 全局 对象 --  用于挂载 一些 经常 用到的 变量、函数  ...

import {
  $tokenName,
  $getToken,
  $setToken,
  $formatSearchParam,
  $version
} from '@/plugins/baseInfo'

import * as engConfig from '@/plugins/eng_config'

// import $previewSingleFile from '@/plugins/previewSingleFile'

import createReactInstanceApi from '@/plugins/createReactInstanceApi'

import createModalInstanceApi from '@/plugins/createModalInstanceApi'

import { toNumber, cloneDeep } from 'lodash'

import { nanoid } from 'nanoid'

import moment from 'moment'

import dayjs from 'dayjs'

import event from '@/plugins/utils/event'

import { createCommonSingleton } from '@/plugins/utils/index'

import {
  getFileType,
  loadJs,
  loadCss,
  getStreamViewUrl,
  downloadFile
} from '@/plugins/utils'

import $axios from '@/plugins/axios'

const querystring = require("querystring");
const $post = function(){
  return $axios.post.apply($axios, arguments)
}
const $get = function () {
  return $axios.get.apply($axios, arguments)
}

const $g = {
  tokenName: $tokenName,          // 保存的 token 字段名
  getToken: $getToken,            //  获取 保存的 token
  setToken: $setToken,            //   设置 token 值
  formatSearchParam: $formatSearchParam,        //  统一处理 参数
  version: $version,                               //  版本号
  post: $post,                    // 插件 axios 的 post 方法
  get: $get,                      //  插件 axios 的 get 方法
  ...engConfig,                   //  微服务 前缀 名
  // previewSingleFile: $previewSingleFile,      //  单个 文件 预览 的 全局  方法
  createReactInstanceApi: createReactInstanceApi,
  toNumber,
  cloneDeep,                        // 深拷贝
  nanoid,                              // uuid 类似
  moment,
  querystring,
  dayjs,
  getFileType,                          //  获取 文件 类型
  loadJs,                               //  动态 加载 js
  loadCss,                              //  动态 加载  css
  getStreamViewUrl,
  createCommonSingleton,
  createModalInstanceApi,
  downloadFile,                    //  统一 文件 下载  函数
  event,                           // 观察者模式  --  不需要使用时， 记得  remove 添加的回调函数
  transitionPageList: [
    '/reportManagement/empty',
    '/contractorManagement/empty',
    '/constractionManagement/empty',
    '/milepost/empty',
    '/design/empty',
    '/feasibilityStudy/empty',
    '/compileDemand/empty'
  ]
}

export default $g